// A Temporary container for vertices in the graph that can not be added to current group

#ifndef TEMPVERTEXCONTAINER_H 
#define TEMPVERTEXCONTAINER_H
 
#include <map>	
#include <set>
#include <utility>
#include "Vertex.h"
#include "RankSet.h"
#include "Group.h"
#include "VertexDirectory.h"
#include <cstdlib>

using namespace std; 

class Graph;

class TempVertexContainer : VertexContainer
{
	public:
		TempVertexContainer(Graph *graph);
		void InsertNewVertex(VertexBase* vertex);
		void Clear();
		set<Vertex*>::iterator Begin();
		set<Vertex*>::iterator End();
		set<Vertex*>::iterator Find(Vertex *vertex);
		void Erase(set<Vertex*>::iterator it);
		Group* GetCurrentGroup();
		void SetCurrentGroup(Group* group);
		int Count();
		Graph *GetContainingGraph();
		void RemoveVertex(Vertex *vertex);

	private:
		set<Vertex*> m_TempSet; 
		Group* m_RelatedGroup;
		Graph* m_Graph;

};


#endif
